<?php
	class DocumentsController extends AppController
	{
	
		var $name = 'Documents';
		var $helpers = array('Html', 'Time', 'javascript');
		var $aux=array();
		var $layout = 'menu';
		
		
		
		
		/*1er bit es resolucion*/
		/*2do bit es expediente*/
		/*3er bit es respuesta*/
		var $datosAdicionales=0;

		/*Desc: Funcion que dispara la implementacion del caso de uso registrar Salida
		  Estado: Funcion Completa
		  Autor: Martin Carrillo
		*/
		function registrarSalida()
		{
			/* Titulo de la pagina */
			$this->pageTitle = 'Registrar Salida';
			
			/* Si presino el boton borrar */
			if ( isset($this->params['form']['Borrar']) &&
			 $this->params['form']['Borrar'] == 'Borrar')
			{
				unset($this->data['Document']);
				unset($this->data['Person']);
				$this->Session->del('data');
				$this->Session->del('listaPersonas');
				$this->Session->del('listaDependencias');
			}
			
						
			/* Es la primera vez que se entra al formulario */
			if  ( empty($this->data))  
			{
				if ( $this->Session->check('data') )
				{
					$this->data = $this->Session->read('data');
					$this->Session->del('data');
					$this->Session->del('listaPersonas');
					$this->Session->del('listaDependencias');
				}
				$this->definirVariablesFormSalida();
			}
			else
			{
				/*Son documentos de intercambio*/
				$this->data['Document']['despacho'] = '1';
				
				/* Definir el proposito del documento segun los datos ingresados */
				$this->data['Document']['proposito'] = '';
				
				$this->definirProposito($this->data);
				
				/* Definir el tipo de movimiento */
				$this->data['Document']['movimiento'] = 2; // Salida
				if ( $this->Document->tipoHash[$this->data['Document']['tipo']] == 'Expediente')
				{
					$this->data['Document']['movimiento'] = 3; // Entrada-Salida
				}
				
				if ( $this->validarFormSalida() )
				{
					/* Conversion de las fechas del formulario a fechas SQL */
					$this->fechaToSql($this->data);
			
					$this->Session->del('data');
					$this->Session->write('data', $this->data);
					$this->Session->write('propositoHash',$this->Document->propositoHash);
					$this->Session->write('tipoHash',$this->Document->tipoHash);
					$this->redirect('/Documents/confirmarRegistroSalida');
				
				}
				else
				{
					/*Si falta algo o hubo algun error en el ingreso de datos */
					$this->definirVariablesFormSalida();
					$data = $this->data;
					$this->set('documents', $data);
				}				
			}
		}
		
		function isSelected($valor)
		{
			$check = array( 1 => 'checked', 0 => 'unchecked', -1 => 'unchecked', 'on' => 'checked', 'off' => 'uncheked');
			
			$selected = $selectedPersonas = $check[$valor];

			if (!strcmp($selected,'unchecked'))
			{
				return false;
			}
			return true;
		}
		
		function isSelectedPersonas()
		{
			$check = array( 1 => 'checked', 0 => 'unchecked', -1 => 'unchecked', 'on' => 'checked', 'off' => 'uncheked');
			
			$selectedPersonas = 'unchecked';
			
			if (isset($this->data['Document']['destinoPersonas']) )
			{
				$selectedPersonas = $check[ $this->data['Document']['destinoPersonas'] ];
			}
			if (!strcmp($selectedPersonas,'unchecked'))
			{
				return false;
			}
			return true;
		}
		
		function isSelectedDependencia()
		{
			$check = array( 1 => 'checked', 0 => 'unchecked', -1 => 'unchecked', 'on' => 'checked', 'off' => 'uncheked');
			
			$selectedDependencia = 'unchecked';
			
			if (isset($this->data['Document']['destinoDependencia']) )
			{
				$selectedDependencia = $check[ $this->data['Document']['destinoDependencia'] ];
			}
			if (!strcmp($selectedDependencia,'unchecked'))
			{
				return false;
			}
			return true;
		}
		
		/* Valida los campos segun los datos ingresados */
		function validarFormSalida()
		{
			/* Si el documento no es del tipo expediente, no validar el campo numero_expediente */
			if  ( ( $this->Document->tipoHash[$this->data['Document']['tipo']] != 'Expediente' )  )
			{
				unset($this->data['Document']['numero_expediente']);
			}
			
			//////// VALIDAR SI INGRESO ALGUN DESTINO \\\\\\\\\\\
			if ( !($this->isSelectedDependencia()) && (!($this->isSelectedPersonas())))
			{
				$this->Document->invalidate('destino');
			}
			//////////////////////////////////////////////////////
			
			//////////// SELECCIONO DESTINO PERSONAS PERO NO MARCO NINGUNA?? //////////////	

			if ( ($this->isSelectedPersonas() ) && (empty($this->data['Person']['Person'])) )
			{
				$this->Document->invalidate('persona');
			}
			//////////////////////////////////////////////////////////////////////////////////
					
			//////////// SELECCIONO DESTINO DEPENDENCIA PERO NO MARCO NINGUNA?? //////////////		
			if ( ($this->isSelectedDependencia() ) && (empty($this->data['Document']['id_dependencia_externa'])) )
			{
				$this->Document->invalidate('id_dependencia_externa');
			}
			///////////////////////////////////////////////////////////////////////////////////
					
			// LAS DEMAS VALIDACIONES LAS HACE AUTOMATICAMENTE CON LAS REGLAS DEL MODELO
			return $this->Document->validates($this->data);
			
		}
		
		/*
		 * Descripcion: Muestra el contenido de los datos ingresados, el usuario podra confirmar,
		 * cancelar o modificarlos
		 * Estado:Completo
		 * Autor: Martin Carrillo ( mcarrillo@fi.uba.ar )
		 * 
		 */
		function confirmarRegistroSalida()
		{
			/* Titulo de la pagina */
			$this->pageTitle = 'Confirmacion de Registro de Documentacion saliente.';
			
			/* Leo los datos guardados en la sesion */
			$data = $this->Session->read('data');
			$propositoHash = $this->Session->read('propositoHash');
			$tipoHash = $this->Session->read('tipoHash');
			
			/* Destinatarios del documento de salida */
			$listaPersonas = $this->Session->read('listaPersonas');
			$listaDependencias = $this->Session->read('listaDependencias');
			
			if (!($this->isSelected($data['Document']['destinoDependencia'])) )
			{
				unset($data['Document']['id_dependencia_externa']);				 
			}
			else
			{
				if (!empty($listaDependencias))
				{$destinatarios[-1] = $listaDependencias[$data['Document']['id_dependencia_externa']];}
			}
			
			if (!($this->isSelected($data['Document']['destinoPersonas'])))
			{				
				unset($data['Person']);
			}
			else
			{
				if (!empty($listaPersonas) ) {
				foreach ($data['Person']['Person'] as $idPersona )
				{
					$destinatarios[$idPersona] = $listaPersonas[$idPersona];
				}
				}
			}
			
			/* Usuario que registro el documento */
			$data['Document']['id_persona_autor'] = $this->Session->read('usuariosession');
			
			/* Limpio el registro que se va a guardar en la BD */
			$this->Session->del('data');
			$this->Session->write('data',$data);
			
			/* Seteo las variables para la vista */
			$this->set('document', $data['Document']);	
			$this->set('tipoHash', $tipoHash);
			$this->set('propositoHash', $propositoHash);
			$this->set('destinatarios', $destinatarios);

		}

		/*
		 * Descripcion: Guarda el registro de salida en la base de datos
		 * Estado: Completo
		 * Autor: Martin Carrillo ( mcarrillo@fi.uba.ar )
		 * 
		 */
		function guardarRegistroSalida()
		{
			/* Si presino el boton Cancelar */
			if ( isset($this->params['form']['Cancelar']) &&
			 $this->params['form']['Cancelar'] == 'Cancelar')
			{
				$this->Session->del('data');
				$this->Session->del('listaPersonas');
				$this->Session->del('listaDependencias');
				$this->redirect('/');				
			}
			
			
			$data = $this->Session->read('data');
			if ( $this->Document->save($data) )
			{
				$id = $this->Document->getLastInsertId();
				$this->set('id', $id);
				$this->Session->del('data');
				$this->Session->del('listaPersonas');
				$this->Session->del('listaDependencias');
				switch ($data['Document']['proposito'])
				{
					case '2':
					case '3':
					case '6': 
					case '7': $this->redirect('/documents/respuesta/'.$id);
							  break;
					//default: $this->redirect('/documents/ver_datos_y_documentos_relacionados/' . $id);
					default: $this->redirect('/');
				}
			}
			else
			{
				$this->flash('Sus datos no se han podido guardar.','/documents/registrarSalida');
			}		  
		}
		
		
		/*
		 * Desc: Funcion que define las variables para el formulario del registro de salida
		 * segun el contenido de $this->data
		 * Estado: Completo
		 * Autor: Martin Carrillo
		 */
		function definirVariablesFormSalida()
		{
		 $check = array( 1 => 'checked', 0 => 'unchecked', -1 => 'unchecked', 'on' => 'checked', 'off' => 'uncheked');
		 $listaPersonas = $this->requestAction("People/obtenerDatosAMostrar");
		 $listaDependencias = $this->requestAction("Dependencies/obtenerDatosAMostrar");
		 
		 $this->set('personas',$listaPersonas);
		 $this->set('dependencias',$listaDependencias);
		 
		 $this->Session->write('listaPersonas', $listaPersonas);
		 $this->Session->write('listaDependencias', $listaDependencias);
		
		if (empty($this->data))
		{	
			$this->set('selectedTipo',1);
			$this->set('isSelectedExpediente',false);
			$this->set('selectedPersonas','unchecked');
			$this->set('selectedDependencia','unchecked');
			$this->set('selectedSolicitud','unchecked');
			$this->set('selectedNotificacion','unchecked');
			$this->set('selectedRespuesta','unchecked');
		}
		else
		{
			$this->set('selectedSolicitud','unchecked');
			$this->set('selectedNotificacion','unchecked');
			$this->set('selectedRespuesta','unchecked');
			if (isset($this->data['Document']['destinoPersonas']) )
			{
				$this->set('selectedPersonas', $check[ $this->data['Document']['destinoPersonas'] ] );
			}
			if (isset($this->data['Document']['destinoDependencia']))
			{
				$this->set('selectedDependencia', $check[$this->data['Document']['destinoDependencia'] ]);
			}
			if (!(isset($this->data['Document']['tipo']) ) )
			{ $this->data['Document']['tipo'] = 1; };
			$this->set('selectedTipo',$this->data['Document']['tipo']);
			if ( $this->data['Document']['tipo'] == 4) { $this->set('isSelectedExpediente',true); }
			else { $this->set('isSelectedExpediente',false);}
			if ( $this->data['Document']['solicitud'] == 'on' )  { $this->set('selectedSolicitud','checked'); }
			if ( $this->data['Document']['notificacion'] == 'on' ) { $this->set('selectedNotificacion','checked'); }
			if ( $this->data['Document']['respuesta'] == 'on' ) {$this->set('selectedRespuesta','checked'); }
		}
			
		}


		/*Desc: Funcion que define cual es el proposito del documento
		  Estado: Funcion completa
		  Autor: Mauro
		*/

		private function definirProposito()
		{

			/*Se setean los bits de propositoAux (ver Modelo de Documento)  */
			/*segun el proposito del documento.				*/
						
			if($this->data['Document']['solicitud'] == 'on' )
			{
				$this->Document->propositoAux=1;
				$this->data['Document']['proposito']=$this->Document->propositoAux;
			}

			if( $this->data['Document']['respuesta'] == 'on' )
			{
				if(! ($this->Document->propositoAux) )
				{
					$this->Document->propositoAux= 2;
				}else{
					$this->Document->propositoAux=$this->Document->propositoAux | 2;
				}
				$this->data['Document']['proposito']=$this->Document->propositoAux;
			}
			
			if($this->data['Document']['notificacion'] == 'on' )
			{
				if( (!$this->Document->propositoAux) )
				{
					$this->Document->propositoAux= 4;
				}else{
					$this->Document->propositoAux=$this->Document->propositoAux | 4;
				}
				$this->data['Document']['proposito']=$this->Document->propositoAux;				
			}

			
			/*Elimina los elementos del arreglo que ya no se utilizaran
		  	 Comentado por Martin Carrillo -> mcarrillo@fi.uba.ar
			unset ($this->data['Document']['notificacion']);
		  	unset ($this->data['Document']['respuesta']);
		  	unset ($this->data['Document']['solicitud']);
 		   */
			
		  		
			
		}

		
		/********************************************************************************************/
		

		/*Desc: Funcion que dispara la implementacion del caso de uso registrar Entrada
		  Estado: Funcion Completa
		  Autor: Mauro Cledon

		*/
		function registrarEntrada()
		{
			/* Titulo de la pagina */
			$this->pageTitle = 'Registrar Entrada';
			
			/* Si presino el boton borrar */
			if ( isset($this->params['form']['Borrar']) &&
			 $this->params['form']['Borrar'] == 'Borrar')
			{
				unset($this->data['Document']);
				$this->Session->del('data');
				
			}

					

			
						
			/* Es la primera vez que se entra al formulario */
			if  ( empty($this->data))  
			{
				if ( $this->Session->check('data') )
				{
					$this->data = $this->Session->read('data');
					$this->Session->del('data');
				}
				$this->definirVariablesFormEntrada();
			}
			else
			{

				/*Son documentos de intercambio*/
				$this->data['Document']['despacho'] = '1';

				/* Definir el proposito del documento segun los datos ingresados */
				$this->data['Document']['proposito'] = '';
				$this->definirProposito($this->data);
				
				if($this->data['Document']['proposito'] & 2)
				{
					$this->Session->write('respuesta', '1');
				}else
				{
					$this->Session->write('respuesta',  '0');
				}

				/* Definir el tipo de movimiento */
				$this->data['Document']['movimiento'] = 1; // Entrada
				if ( $this->Document->tipoHash[$this->data['Document']['tipo']] == 'Expediente')
				{
					$this->data['Document']['movimiento'] = 3; // Entrada-Salida
				}
				
				if ( $this->validarFormEntrada() )
				{
					/* Conversion de las fechas del formulario a fechas SQL */
					$this->fechaToSql($this->data);
			
					$this->Session->del('data');
					$this->Session->write('data', $this->data);
					$this->Session->write('propositoHash',$this->Document->propositoHash);
					$this->Session->write('tipoHash',$this->Document->tipoHash);
					$this->Session->write('tipoResolucionHash',$this->Document->tipoResolucionHash);
					
					$this->redirect('/Documents/confirmarRegistroEntrada');
				
				}
				else
				{
					/*Si falta algo o hubo algun error en el ingreso de datos */
					$this->definirVariablesFormEntrada();
					$data = $this->data;
					$this->set('documents', $data);
				}				
			}
		}
		
		/* Valida los campos segun los datos ingresados */
		function validarFormEntrada()
		{
			
			/* Si el documento no es del tipo expediente, no validar el campo numero_expediente */
			if  ( ( $this->Document->tipoHash[$this->data['Document']['tipo']] != 'Expediente' )  )
			{
				unset($this->data['Document']['numero_expediente']);
			}
					

			/* Si el documento no es del tipo resolucion, no validar el campo numero_resolucion */
			if  ( ( $this->Document->tipoHash[$this->data['Document']['tipo']] != 'Resolucion' )  )
			{
				unset($this->data['Document']['numero_resolucion']);
			}


			return $this->Document->validates($this->data);
			
		}
		
		/*
		 * Descripcion: Muestra el contenido de los datos ingresados, el usuario podra confirmar,
		 * cancelar o modificarlos
		 * Estado: Completo
		 * Autor: Mauro Cledon
		 * 
		 */
		function confirmarRegistroEntrada()
		{
			/* Titulo de la pagina */
			$this->pageTitle = 'Confirmacion de Registro de Documentacion entrante.';
			
			/* Leo los datos guardados en la sesion */
			$data = $this->Session->read('data');
			$propositoHash = $this->Session->read('propositoHash');
			$tipoHash = $this->Session->read('tipoHash');
			$tipoResolucionHash=$this->Session->read('tipoResolucionHash');

			
			/* Autor del registro de entrada */
			$data['Document']['id_persona_autor'] = $this->Session->read('usuariosession');
			
			
	
			/* Seteo las variables para la vista */
			$this->Session->write('data',$data);
			$this->set('document', $data['Document']);	
			$this->set('tipoHash', $tipoHash);
			$this->set('tipoResolucionHash', $tipoResolucionHash);
			$this->set('propositoHash', $propositoHash);

		}

		/*
		 * Descripcion: Guarda el registro de Entrada en la base de datos
		 * Estado: Completo
		 * Autor: Mauro Cledon
		 * 
		 */
		function guardarRegistroEntrada()
		{
			/* Si presino el boton Cancelar */
			if ( isset($this->params['form']['Cancelar']) &&
			 $this->params['form']['Cancelar'] == 'Cancelar')
			{
				$this->Session->del('data');
				$this->redirect('/');				
			}
			
			
			$data = $this->Session->read('data');
			if ( $this->Document->save($data) )
			{
				$id = $this->Document->getLastInsertId();
				$this->Session->del('data');
	
				$rta = $this->Session->read('respuesta');
				if("$rta"=='1')
				{
				
					$redireccion="/documents/respuesta/$id";	
				}else
				{
					$redireccion="/";
				}
				
				$this->redirect("$redireccion");
			}
			else
			{
				$this->flash('Sus datos no se han podido guardar.','/documents/registrarEntrada');
			}		  
		}
		
		
		/*
		 * Desc: Funcion que define las variables para el formulario del registro de Entrada
		 * segun el contenido de $this->data
		 * Estado: Completo
		 * Autor: Mauro Cledon
		 */
		function definirVariablesFormEntrada()
		{
		if (empty($this->data))
		{
			$this->set('personas',$this->requestAction("People/obtenerDatosAMostrar"));
			$this->set('dependencias',$this->requestAction("Dependencies/obtenerDatosAMostrar"));
			$this->set('selectedTipo',1);
			$this->set('selectedDestino',1);
			$this->set('isSelectedExpediente',false);
			$this->set('isSelectedResolucion',false);
			$this->set('selectedSolicitud','unchecked');
			$this->set('selectedNotificacion','unchecked');
			$this->set('selectedRespuesta','unchecked');
			
		}
		else
		{
			$this->set('personas',$this->requestAction("People/obtenerDatosAMostrar"));
			$this->set('dependencias',$this->requestAction("Dependencies/obtenerDatosAMostrar"));
			$this->set('selectedSolicitud','unchecked');
			$this->set('selectedNotificacion','unchecked');
			$this->set('selectedRespuesta','unchecked');
			
			if (!(isset($this->data['Document']['tipo']) ) )
			{ $this->data['Document']['tipo'] = 1; };
			$this->set('selectedTipo',$this->data['Document']['tipo']);
			if ( $this->data['Document']['tipo'] == 3) { $this->set('isSelectedResolucion',true); }
			else { $this->set('isSelectedResolucion',false);}
			if ( $this->data['Document']['tipo'] == 4) { $this->set('isSelectedExpediente',true); }
			else { $this->set('isSelectedExpediente',false);}
			if ( $this->data['Document']['solicitud'] == 'on' )  { $this->set('selectedSolicitud','checked'); }
			if ( $this->data['Document']['notificacion'] == 'on' ) { $this->set('selectedNotificacion','checked'); }
			if ( $this->data['Document']['respuesta'] == 'on' ) {$this->set('selectedRespuesta','checked'); }
			
		}
			
		}
		
		/*Desc: La siguiente funcion recibe un fecha en el formato ingresado por el usuario
			y modifica este formato al aceptado por la tabla. 
			La hora, minutos y segundos los descarto porque los considero 			        innecesarios, de todas formas de considerarlos importantes se pueden 				considerar, todos o algunos de los datos descartados.
		  Estado: Funcion completa
		  Autor: Mauro
		*/
		private function fechaToSql(&$vec)
		{

		  /*Modifica la fecha de creacion al formato aceptado por SQL*/
 		  $vec['Document']['fecha_creacion']=$vec['Document']['fecha_creacion_year'].'-'.$vec['Document']['fecha_creacion_month'].'-'.$vec['Document']['fecha_creacion_day'].' 00:00:00';

		 	 
		  /** Funcion modificada por Martin Carrillo -> mcarrillo@fi.uba.ar */

		  /*Modifica la fecha de ingreso al formato aceptado por SQL*/
		  if ( !(empty($vec['Document']['fecha_ingreso_year']) ) )
		  {
		  	$vec['Document']['fecha_ingreso']=$vec['Document']['fecha_ingreso_year'].'-'.$vec['Document']['fecha_ingreso_month'].'-'.$vec['Document']['fecha_ingreso_day'].' 00:00:00';
		  }
		  
		  if ( !(empty($vec['Document']['fecha_egreso_year'] ) ) )
		  {
		  	$vec['Document']['fecha_egreso']=$vec['Document']['fecha_egreso_year'].'-'.$vec['Document']['fecha_egreso_month'].'-'.$vec['Document']['fecha_egreso_day'].' 00:00:00';
		  }


		   /*Elimina los elementos del arreglo que ya no se utilizaran*/
		  unset ($vec['Document']['fecha_creacion_year']);
		  unset ($vec['Document']['fecha_creacion_month']);
		  unset ($vec['Document']['fecha_creacion_day']);
		  unset ($vec['Document']['fecha_ingreso_year']);
		  unset ($vec['Document']['fecha_ingreso_month']);
		  unset ($vec['Document']['fecha_ingreso_day']);
		  unset ($vec['Document']['fecha_egreso_year']);
		  unset ($vec['Document']['fecha_egreso_month']);
		  unset ($vec['Document']['fecha_egreso_day']);

			
		}

	
		/*Desc: La siguiente funcion recibe el id del documento de tipo respuesta
			recientemente ingresado, este dato se lo mandara a la vista, la cual 
			expondra las opciones de asociar doc y archivar doc.
			Si el usuario decide precionar el boton "Continuar", se volvera al
			menu principal.
		  Estado: Funcion completa
		  Autor: Mauro
		*/
		
		function respuesta($id=null)
		{
			
			/*Le manda el id del documento a la vista*/	
			$this->set('id',$id);

			/* Si presino el boton Continuar */
			if ( isset($this->params['form']['Continuar']) &&
			 $this->params['form']['Continuar'] == 'Continuar')
			{
				
				$this->redirect('/');				
			}
			
		
		}

		/*Desc: Permite el ingreso de la consulta a realizar.
		  Autor: Ezequiel Alvarez
		*/
		function ingresar_datos_busqueda()
		{
			$this->set('lista_personas', $this->requestAction("People/obtenerDatosAMostrar"));
			$this->set('lista_dependencias', $this->requestAction("Dependencies/obtenerDatosAMostrar"));
		}



		/*Desc: Resuelve la consulta a partir de los datos ingresados y devuelve el
		  resultado en forma de tabla.
		  Autor: Ezequiel Alvarez
		*/
		function resultados_busqueda()
		{
			if (!empty($this->params))
			{
				if (!empty($this->params['form']))
				{
					//Primero debo separar los datos ingresados en el formulario y
					//verificar que sean validos.
					$parametros_busqueda = $this->separarParametros($this->params['form']);
					$respuesta = $this->Document->resolverConsulta($parametros_busqueda);

					//$respuesta es un array si los parametros son validos, y sino, 
					//es un string que indica un mensaje de error que describe el
					//tipo de invalidez.
					if (is_array($respuesta))
					{
						//Los resultados de la busqueda los almaceno en la
						//variable $lista_resultados.
						$this->set('lista_resultados', $respuesta);
					}
					else
					{
						//La descripcion del error la guardo en la variable $error.
						$this->set('error', $respuesta);
					}
				}
			}
		}



		/*Desc: Estas son funciones auxiliares para resolver la busqueda.
		  separarParametros interpreta los datos ingresados por el usuario y los devuelve
		  en un array estructurado de una forma fija con la cual va a trabajar el resto 
		  del algoritmo.
		  Autor: Ezequiel Alvarez
		*/
		private function separarParametros($array_form)
		{
			$arrayAux = array(
				'busq_fecha_creacion' => ($this->gp('inp_busq_fecha_creacion','off',$array_form))=='on',
				'busq_fecha_ingreso' => ($this->gp('inp_busq_fecha_ingreso','off',$array_form))=='on',
				'busq_fecha_egreso' => ($this->gp('inp_busq_fecha_egreso','off',$array_form))=='on',
				'archivados_no_archivados' => ($this->gp('inp_archivados_no_archivados','ambos',$array_form)),
				'busq_tipo_movimiento' => ($this->gp('inp_busq_tipo_movimiento','off',$array_form))=='on',
				'entrada' => ($this->gp('inp_entrada','off',$array_form))=='on',
				'salida' => ($this->gp('inp_salida','off',$array_form))=='on',
				'operador_fecha_creacion1' => $this->gp('inp_operador_fecha_creacion1','igual',$array_form),
				'fecha_creacion1' => $this->gp('inp_fecha_creacion1','1/1/1',$array_form),
				'operador_fecha_creacion2' => $this->gp('inp_operador_fecha_creacion2','nada',$array_form),
				'fecha_creacion2' => $this->gp('inp_fecha_creacion2','1/1/1',$array_form),
				'operador_fecha_ingreso1' => $this->gp('inp_operador_fecha_ingreso1','igual',$array_form),
				'fecha_ingreso1' => $this->gp('inp_fecha_ingreso1','1/1/1',$array_form),
				'operador_fecha_ingreso2' => $this->gp('inp_operador_fecha_ingreso2','nada',$array_form),
				'fecha_ingreso2' => $this->gp('inp_fecha_ingreso2','1/1/1',$array_form),
				'operador_fecha_egreso1' => $this->gp('inp_operador_fecha_egreso1','igual',$array_form),
				'fecha_egreso1' => $this->gp('inp_fecha_egreso1','1/1/1',$array_form),
				'operador_fecha_egreso2' => $this->gp('inp_operador_fecha_egreso2','nada',$array_form),
				'fecha_egreso2' => $this->gp('inp_fecha_egreso2','1/1/1',$array_form),
				'busq_tipo' => ($this->gp('inp_busq_tipo','off',$array_form))=='on',
				'tipo' => ($this->gp('inp_tipo','notas',$array_form)),
				'busq_proposito' => ($this->gp('inp_busq_proposito','off',$array_form))=='on',
				'solicitudes' => ($this->gp('inp_solicitudes','off',$array_form))=='on',
				'respuestas' => ($this->gp('inp_respuestas','off',$array_form))=='on',
				'notificaciones' => ($this->gp('inp_notificaciones','off',$array_form))=='on',
				'asunto' => ($this->gp('inp_asunto','',$array_form)),
				'observacion' => ($this->gp('inp_observacion',null,$array_form)),
				'autor' => ($this->gp('inp_autor',0,$array_form)),
				'destinatario1' => ($this->gp('inp_destinatario_1',0,$array_form)),
				'destinatario2' => ($this->gp('inp_destinatario_2',0,$array_form)),
				'destinatario3' => ($this->gp('inp_destinatario_3',0,$array_form)),
				'dependencia_local' => ($this->gp('inp_dependencia_local',0,$array_form)),
				'dependencia_externa' => ($this->gp('inp_dependencia_externa',0,$array_form)),
			);

			return $arrayAux;
		}


		/*Desc: Esta funcion unicamente sirve para ahorrar codigo. Lo que hace es, asignar
		  un valor por default en caso de no estar definida.
		  Autor: Ezequiel Alvarez
		*/
		private function gp ($nombre, $default, $array_form)
		{
			return (isset($array_form[$nombre])?$array_form[$nombre]:$default);
		}




		/*Desc: Lista los documentos que no estan archivados para que el usuario elija
		  algunos con el fin de asociar esos documentos con el de trabajo.
		  Para eso, recibe como parametro el id del documento de trabajo.
		  Autor: Ezequiel Alvarez
		*/
		function asociar_documento ($id)
		{
			if (isset($id))
			{
				//Primero verifico que el documento exista. Para eso primero hago una
				//consulta por el numero de id.
				$documento = $this->Document->findByid($id);

				if (empty($documento))
				{
					//Si el array esta vacio es porque no existe ningun documento con ese
					//id.
					$this->set('error', 'Documento inexistente');
				}
				else
				{
					//Guardo la lista de documentos sin archivar en la variable
					//$lista_documentos_sin_archivar.
					$this->set('lista_documentos_sin_archivar', $this->Document->obtenerDocumentosSinArchivar());
					//Ademas debo pasar el id para identificar el documento de trabajo.
					$this->set('id', $id);
				}
			}
		}



		/*Desc: Muestra los datos completos del documento seleccionado y la lista de todos
		  los documentos asociados a el.
		  Autor: Ezequiel Alvarez
		*/
		function ver_datos_y_documentos_relacionados ($id)
		{
			if (isset($id))
			{
				//Primero obtengo los datos del documento en cuestion.
				$this->ver($id);

				//Ahora debo obtener la lista de documentos asociados y sus datos.
				$this->set('lista_documentos_relacionados',$this->Document->obtenerDocumentosRelacionados($id));
			}
		}



		/*Desc: Muestra los datos completos del documento seleccionado.
		  Autor: Ezequiel Alvarez
		*/
		function ver ($id)
		{
			if (isset($id))
			{
				//Obtengo los datos del documento en cuestion.
				$documento = $this->Document->findByid($id);
				$this->set('datos_documento', $documento);
				$this->set('destinatarios_documento', $this->requestAction("People/obtenerDestinatarios/$id"));
			}
		}
	}
?>
